iT邦幫忙

2023 iThome 鐵人賽

DAY 10
1

本篇為延續 “ 常用的 dbt 指令參數(上)” 的下集

--target

  • --target 參數允許您指定要運行的目標,例如 prod(生產環境)或 dev(開發環境)。這有助於區分不同環境中的運行,但這在官方文件提到比較少,相關的只在講 profile.yml 段落提到

    這有什麼用處呢?

    因為 dbt 指令除了更新你的資料庫,還可能在背後上傳 log 檔或各種執行結果到你的資料庫,但我們很常在本機測試執行,我們也不想每次執行都把結果都上傳,耗費資源和執行時間,因此跑 dbt run 或 dbt test 加上 —target prod 讓 dbt 知道你這次若是正式環境,才需要把東西上傳

--vars

  • --vars 參數用於指定 dbt 專案環境的變數。這有助於管理不同環境中的配置和變數

  • 使用情境:

    1. 除了 target 的用法, vars 也可以幫你區分環境。若你在跑 CI 流程而非正式環境,你可以透過 env 設定跑 dbt 指令時 CI 時資料庫的 dataset 或是 table 是在 staging 環境而非正式,因此不會動到正式環境,若 CI 有問題可以去 staging 環境查看

      →此設定需要搭配 get_custom_schema 的改寫

      {%- if custom_schema_name is none -%}
      
              {{ default_schema }}
      
          {%- else -%}
      
              {%- set env = var("env", none) -%}
              {%- if env is none -%}
                  {{ custom_schema_name | trim }}
              {%- elif env == "staging" -%}
                  {{ custom_schema_name | trim }}_staging
              {%- else -%}
                  none
              {%- endif -%}
      
          {%- endif -%}
      

      改寫了以上 get_custom_schema,之後只想在測試環境執行, command 加上 'env: staging' ,你的 model 就是在 另給 dataset 生成囉!

    dbt build --select my_model --vars 'env: staging'
    
    1. 你的 dbt model 需要帶參數進去,你可以在跑 dbt run 時設定要帶入變數的值,你的變數可以設定在 mode 裡或是 dbt_project.yml

      官方文件:

      1. model 帶變數的方法 : 如何讓你的 model 可以帶變數,還可以設定預設值

      2.如何定義變數: 如何設定你的變數,除了在 model, 還可以在 dbt_project.yml , 也可以在 command line


上一篇
dbt 如何客製化 bigquery table 命名? dbt custom alias 原理,使用方式及我們的做法
下一篇
data quality 系列 - dbt test 原理、使用方式
系列文
如何借助 dbt 優化當代資料倉儲及資料工程師的水肥之路分享30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言